/**
 * 特殊类型
 * @flow
 */

//  字面量类型
// 将a定义为'foo'后，其只能被'foo'被赋值
const a: 'foo' = 'foo'  
// type只能是'success' 、 'danger' 、 'error' 、 'info'类型之一
const type: 'success' | 'danger' | 'error' | 'info' = 'info' 

// 联合类型, 可以使用关键字type去声明一个类型， 声明后的这个类型可全局使用
type StringOrNumber = string | number
const b : StringOrNumber = 100

// -----------------------------------------------------------

// Maybe 类型
const c: ?number = undefined
const c1: number | null | void = undefined